<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            padding: 0;
            margin: 0;
            list-style: none;
        }
        .banner {
            width: 400px;
            height: 300px;
            margin: 40px auto;
            position: relative;
            background-color: #ff0;
        }
        .banner span {
            width: 30px;
            height: 30px;
            background-color: #000;
            display: flex;
            justify-content: center;
            align-items: center;
            position: absolute;
            top: 0;
            bottom: 0;
            margin: auto;
            color: #fff;
            z-index: 10;
        }
        .next {
            right: 0;
        }
        .banner ul li {
            width: 400px;
            height: 300px;
            position: absolute;
            left: 0;
            top: 0;
            display: flex;
            justify-content: center;
            align-items: center;
            font-size: 50px;
            opacity: 0;
            transition: .3s;
        }
        .banner ol {
            position: absolute;
            bottom: 0;
            display: flex;
            justify-content: center;
            width: 100%;
        }
        .banner ol li {
            width: 30px;
            height: 30px;
            border-radius: 50%;
            background-color: #f00;
            margin: 5px;
        }

        .show {
            opacity: 1 !important;
        }
        .active{
            background-color: green !important;
        }
    </style>
</head>
<body>
    <div class="banner">
        <span class="prev">&lt;</span>
        <span class="next">&gt;</span>
        <ul>
            <li class="show">1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
        </ul>
        <ol>
            <li qq="0" class="dot active"></li>
            <li qq="1" class="dot"></li>
            <li qq="2" class="dot"></li>
            <li qq="3" class="dot"></li>
        </ol>
    </div>



    <script>

        // css部分
        //    所有图片定位在同一个地方   opacity:0
        //    显示当前这一张   清除其他的show  和  active    给当前这一个添加


        // js部分
        //   自动播放   计数器index
        //   点击切换  


        // 注意：
        //    上翻页和下翻页  如果点不动   定位被覆盖  z-index


        // 拿到元素
        var oBanner = document.querySelector('.banner') ;
        var oUlLis = oBanner.querySelectorAll('ul li') ;   // 图
        var oOlLis = oBanner.querySelectorAll('ol li') ;   // 小圆点
        var oPrev =oBanner.querySelector('.prev') ;
        var oNext = oBanner.querySelector('.next') ;

        // 全局变量
        var index = 0 ;
        var t = null ;


        // 防止点击过快    使用延时器  300ms
        var flag = true ;

    

        autoPlay() ;


        // 事件委托
        oBanner.addEventListener('click' , function(e) {
            var e = e || event ;
            var target = e.target || e.srcElement ;
            // 上翻页
            if(target.className === 'prev') {
                if(flag) {
                    flag = false ;
                    clearInterval(t) ;
                    index-- ;
                    if(index === -1) {
                        index = oUlLis.length - 1 ;
                    }
                    show() ;
                    // autoPlay() ;
                    setTimeout(function() {
                        flag = true ;
                    } , 300)
                    return ;
                }
            }
            // 下翻页
            if(target.className === 'next') {
                clearInterval(t) ;
                index++ ;
                if(index === oUlLis.length) {
                    index = 0 ;
                }
                show() ;
                autoPlay()
                return ;
            }
            // 小点切换
            if(target.className === 'dot') {
                clearInterval(t) ;
                // 当前点击的是哪一个小圆点，index就等于几
                // index = ? ;
                var j = target.getAttribute('qq') ;
                index = j ;
                show() ;
                autoPlay()
            }
        })


        // 自动播放
        function autoPlay () {
            t = setInterval(function() {
                index++ ;
                if(index === oUlLis.length) {
                    index = 0 ;
                }
                // 显示一张图片
                show()
            } , 1000)
        }


        // 显示一张图   显示index对应的这一张
        function show() {
            // 清除其他的show
            for(var i = 0 ; i < oUlLis.length ; i++) {
                oUlLis[i].classList.remove('show') ;
                oOlLis[i].classList.remove('active') ;
            }
            oUlLis[index].classList.add('show') ;
            oOlLis[index].classList.add('active') ;
        }



    </script>




</body>
</html>